#pragma once
#include "Configuration.h"
#include "GameObject.h"
#include "component/Collider.h"


namespace Boon
{
	class Matrix44;

namespace Rendering
{
	struct InfoObserverRendering
	{
		InfoObserverRendering() 
			: gameObject(), collider(), toWorld( nullptr ) { }
		InfoObserverRendering( const GameObjectWeak& go, const ColliderWeak& c, const Matrix44* m )
			: gameObject( go ), collider( c ), toWorld( m ) { }

		GameObjectWeak			gameObject;
		ColliderWeak			collider;
		const Matrix44*			toWorld;
	};

	/*!
	* Interface used to observe render process
	*/
	class BOON_API IObserverRendering
	{
	public:
		virtual void			OnPrerender( const InfoObserverRendering& ) = 0;
		virtual void			OnRender( const InfoObserverRendering& ) = 0;
		virtual void			OnPostRender( const InfoObserverRendering& ) = 0;


		virtual ~IObserverRendering(void){}
	};


}
}
